package com.cn.wanxi.servlet;

import com.cn.wanxi.model.CompanyModel;
import com.cn.wanxi.model.NavModel;
import com.cn.wanxi.model.NewsModel;
import com.cn.wanxi.service.CompanyService;
import com.cn.wanxi.service.NavService;
import com.cn.wanxi.service.NewsService;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/home")
public class HomeServlet extends HttpServlet {
    /**
     * 1.servlet的生命周期？
     * 2.doget和dopost的区别？
     * 3.req 的作用域是什么？
     * 4.servlet的作用域有哪些？
     * 5.jsp的九大内置对象有哪些？
     */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


//        String logo = "../img/logo_g0yv.jpg";

//        将数据转发给页面：数据来源于哪里？
//        这里的第一个参数对应jsp的${logo}
//        第一个参数叫做key，第二个参数叫做value值
//        req是什么？resp是什么？
//        req是前端请求后端(请求)  可以在里面设置值，接收前端传递过来的值
//        https://www.baidu.com/s?ie=UTF-8&wd=fanyi
//        String word=req.getParameter("wd");//wd对应前端传递过来的key值
//        resp表示从后端传递给前端的数据（响应）
        /**
         * req 的作用域是什么？
         * servlet的作用域有哪些？
         * jsp的九大内置对象有哪些？
         * 为什么要有作用域？容器
         * 作用域就是作用范围
         * page  只存在当前页面
         * request   只存在与发送的页面
         * session  只存在与会话期,不能跨浏览器
         * application  存在与应用程序启动到结束  可以跨浏览器 ,保存到本地文件
         */
//        req.setAttribute("logo", logo);
//        req.setAttribute("phone", "028-999999999");
//        这里在做封装的事情?有可能还有其他代码，非常复杂,
//        1.当一个方法里面的代码量超过80行就需要提取方法，
//        2.当一个方法里面做了很多不一样的事情，那么每件事情都应该写一个方法
//        CompanyModel companyModel = new CompanyModel();
//        companyModel.setLogo(logo);
//        companyModel.setPhone("028-999999999");
//        CompanyService companyService = new CompanyService();
//        req.setAttribute("companyModel", new CompanyService().getCompanyModel());
//        解耦----高内聚 低耦合
//        一般情况下不要用session
//        req.getSession().setAttribute("logo",logo);
//        ServletContext application = req.getServletContext();
//        application.setAttribute("logo", logo);
//        -----------------------------------------導航
//        如果将所有对象放在一起，数组，，集合  array  connection（  list  set）
//        NavService navService = new NavService();
//        NavModel[] navModels=new NavModel[6];
//        NavModel[] navModels = navService.getNavModels();
//        req.setAttribute("navModels", navService.getNavModels());
//        req.setAttribute("navModels",new NavService().getNavModels());
//        页面转发  需要转发数据
        TopAndFootServlet.getData(req);//公司信息和导航信息
        NewsService newsService = new NewsService();
        NewsModel[] newsModels = newsService.getNewsModels();
        req.setAttribute("newsModels", newsModels);
        req.getRequestDispatcher("/jsp/home.jsp").forward(req, resp);
//        纯粹跳转页面
//        resp.sendRedirect("/jsp/home.jsp");
    }

}
